﻿using Koala.Pro.Common;
using Koala.Pro.Core.Dto;
using Koala.Pro.Core.Models;

namespace Koala.Pro.Services
{
    public interface IFunctionService : IMyCrudService<FunctionInfo, string, FunctionPagedDto>, ITransientDependency, IDependency
    {
        Task<List<FunctionInfo>> GetFunctions(string roleIDs, string typeID);

        Task<List<FunctionInfo>> GetFunctionNodes(string roleIDs, string typeID);

        Task<List<FunctionInfo>> GetFunctionNodesByPID(string pid, string typeID);

        Task<List<FunctionInfo>> GetFunctionsByRole(int roleID, string typeID);

        Task<List<FunctionInfo>> GetFunctionsByUser(int userID, string typeID);

        Task<List<FunctionInfo>> GetFunctionNodesByUser(int userID, string typeID);

        Task<bool> DeleteWithSubNode(string mainID);

        Task<List<FunctionInfo>> GetTree(string systemType);

        Task<List<FunctionInfo>> GetTreeByID(string mainID);

        Task<bool> BatchAdd(BatchAddFunctionDto input);

        Task<ListResultDto<FunctionInfo>> GetAllBySystemType(string systemType);
    }
}
